// pages/permission-guide/permission-guide.js
// 位置权限说明页面
// 需求 4.1: 请求位置访问权限并说明使用目的
// 需求 4.2: 用户授予权限时，启用位置追踪功能
// 需求 4.4: 用户拒绝权限时，禁用需要位置的功能

const locationUtil = require('../../utils/location')

Page({
  data: {
    permissionStatus: 'unknown', // unknown, granted, denied, not_requested
    features: [
      {
        icon: '📍',
        title: '智能路径规划',
        description: '根据您的位置推荐附近的景点和散步路线'
      },
      {
        icon: '🏛️',
        title: '景点自动介绍',
        description: '接近景点时自动播放历史文化介绍'
      },
      {
        icon: '🗺️',
        title: '实时导航',
        description: '提供准确的导航指引，不错过任何精彩'
      },
      {
        icon: '👣',
        title: '足迹记录',
        description: '记录您的散步路线，留下美好回忆'
      }
    ],
    privacyPoints: [
      '仅在使用应用期间获取位置信息',
      '位置数据仅用于提供服务功能',
      '不会将您的位置分享给第三方',
      '您可以随时在设置中关闭权限'
    ]
  },

  onLoad(options) {
    // 检查当前权限状态
    this.checkPermissionStatus()
    
    // 如果是从其他页面跳转过来的，记录返回路径
    if (options.returnUrl) {
      this.setData({
        returnUrl: decodeURIComponent(options.returnUrl)
      })
    }
  },

  async checkPermissionStatus() {
    try {
      const result = await locationUtil.checkLocationPermission()
      this.setData({
        permissionStatus: result.status
      })
    } catch (err) {
      console.error('检查权限状态失败:', err)
    }
  },

  /**
   * 请求位置权限
   * 需求 4.2: 用户授予权限时，启用位置追踪功能
   */
  async onRequestPermission() {
    wx.showLoading({ title: '请求权限中...' })
    
    try {
      const result = await locationUtil.requestLocationPermission(true)
      wx.hideLoading()
      
      if (result.granted) {
        // 需求 4.2: 权限已授予，启用位置追踪功能
        wx.showToast({
          title: '权限已授予',
          icon: 'success',
          duration: 2000
        })
        
        this.setData({
          permissionStatus: 'granted'
        })
        
        // 延迟返回，让用户看到成功提示
        setTimeout(() => {
          this.navigateBack()
        }, 2000)
      } else {
        // 需求 4.4: 权限被拒绝，禁用需要位置的功能
        this.setData({
          permissionStatus: 'denied'
        })
        
        wx.showToast({
          title: '权限未授予',
          icon: 'none',
          duration: 2000
        })
      }
    } catch (err) {
      wx.hideLoading()
      console.error('请求权限失败:', err)
      wx.showToast({
        title: '请求权限失败',
        icon: 'none'
      })
    }
  },

  /**
   * 打开系统设置
   * 需求 4.4: 引导用户到设置页面开启权限
   */
  onOpenSettings() {
    wx.openSetting({
      success: (res) => {
        if (res.authSetting['scope.userLocation']) {
          // 需求 4.2: 用户在设置中授予了权限
          wx.showToast({
            title: '权限已开启',
            icon: 'success'
          })
          
          this.setData({
            permissionStatus: 'granted'
          })
          
          setTimeout(() => {
            this.navigateBack()
          }, 2000)
        } else {
          // 需求 4.4: 用户仍未授予权限
          this.setData({
            permissionStatus: 'denied'
          })
        }
      },
      fail: () => {
        wx.showToast({
          title: '打开设置失败',
          icon: 'none'
        })
      }
    })
  },

  /**
   * 继续使用（不授予权限）
   * 需求 4.4: 用户拒绝权限时，禁用需要位置的功能
   */
  onContinueWithoutPermission() {
    wx.showModal({
      title: '功能受限提示',
      content: '没有位置权限，以下功能将无法使用：\n• 路径规划\n• 景点推荐\n• 实时导航\n• 足迹记录\n\n您可以稍后在设置中开启权限。',
      confirmText: '我知道了',
      showCancel: false,
      success: () => {
        this.navigateBack()
      }
    })
  },

  /**
   * 返回上一页
   */
  navigateBack() {
    if (this.data.returnUrl) {
      wx.redirectTo({
        url: this.data.returnUrl,
        fail: () => {
          wx.navigateBack({
            fail: () => {
              wx.switchTab({ url: '/pages/route-planner/route-planner' })
            }
          })
        }
      })
    } else {
      wx.navigateBack({
        fail: () => {
          wx.switchTab({ url: '/pages/route-planner/route-planner' })
        }
      })
    }
  }
})
